Today, computers are used in various situations. Correspondingly, computer systems are becoming increasingly complicated. In view of this, the concept of autonomic computing has been proposed in which a computer has the functions of accommodating itself to various circumstances and making decisions by itself to adapt itself to a changing environment (selfconfiguration), to find/diagnose/prevent (selfrepair) faults, to adjust resources and loads (selfoptimization), and predict/detect/identify/protect against attacks (selfguard) (see, for example, non-patent documents 1 and 2).
Autonomic computing is presently being developed with the aim of enabling a computer system to operate autonomically in an optimum condition at the time of execution of a task, and application of autonomic computing to software development operations has not been conceived. Among operations relating to a computer system, however, those for development and maintenance of software require the heaviest workload.
Today, many developers at various skill levels take part in a software development venture. In many cases of such software development, therefore, quality problems come to the surface, including a problem that the quality of a code is not stable, a problem that bugs exist at the time of execution of an actual task or in the final stage of a test before execution of a task, and a problem that the performance is poor. In a case where a problem comes out in such a stage, operations such as problem determination and embedding of performance measurement codes, design modification, bug fixing and retesting are performed by going back to modeling, development, testing and operation stages upstream in the software development flow. Thus, a large workload is imposed.
It is, therefore, effective to enable a computer to autonomically adapt itself to various circumstances which occur in different stages (phases) of software development.